From: Jan Beulich Date: Mon, 15 Aug 2016 08:41:02 +0000 (+0200) Subject: build-id: fix minor quirks X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~558 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0159ded211fa4fbb9934eb222148442921789816;p=xen.git build-id: fix minor quirks The initial size check in xen_build_id_check() came too late (after the first access to the structure), but was mostly redundant with checks done in all callers; convert it to a properly placed ASSERT(). The "mostly" part being addressed too: xen_build_init() was off by one. And then there was a stray semicolon. Signed-off-by: Jan Beulich Reviewed-by: Konrad Rzeszutek Wilk --- diff --git a/xen/common/version.c b/xen/common/version.c index 0f96849f0d..b2afe9624b 100644 --- a/xen/common/version.c +++ b/xen/common/version.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -90,12 +91,11 @@ int xen_build_id_check(const Elf_Note *n, unsigned int n_sz, const void **p, unsigned int *len) { /* Check if we really have a build-id. */ + ASSERT(n_sz > sizeof(*n)); + if ( NT_GNU_BUILD_ID != n->type ) return -ENODATA; - if ( n_sz <= sizeof(*n) ) - return -EINVAL; - if ( n->namesz + n->descsz < n->namesz ) return -EINVAL; @@ -127,8 +127,8 @@ static int __init xen_build_init(void) return -ENODATA; /* Check for full Note header. */ - if ( &n[1] > __note_gnu_build_id_end ) - return -ENODATA;; + if ( &n[1] >= __note_gnu_build_id_end ) + return -ENODATA; sz = (void *)__note_gnu_build_id_end - (void *)n;